package com.jpro.framework.quartz.client.constant;

/**
 * - 路由策略：当执行器集群部署时，提供丰富的路由策略，包括；
 * FIRST（第一个）：固定选择第一个机器；
 * LAST（最后一个）：固定选择最后一个机器；
 * ROUND（轮询）：；
 * RANDOM（随机）：随机选择在线的机器；
 * CONSISTENT_HASH（一致性HASH）：每个任务按照Hash算法固定选择某一台机器，且所有任务均匀散列在不同机器上。
 * LEAST_FREQUENTLY_USED（最不经常使用）：使用频率最低的机器优先被选举；
 * LEAST_RECENTLY_USED（最近最久未使用）：最久未使用的机器优先被选举；
 * FAILOVER（故障转移）：按照顺序依次进行心跳检测，第一个心跳检测成功的机器选定为目标执行器并发起调度；
 * BUSYOVER（忙碌转移）：按照顺序依次进行空闲检测，第一个空闲检测成功的机器选定为目标执行器并发起调度；
 * SHARDING_BROADCAST(分片广播)：广播触发对应集群中所有机器执行一次任务，同时系统自动传递分片参数；可根据分片参数开发分片任务；
 * 默认选择第一个
 *
 * @author jprocms
 */
public enum ExecutorRouteStrategyEnum {

    /**
     * 固定选择第一个机器
     */
    FIRST,
    /**
     * 固定选择最后一个机器
     */
    LAST,
    /**
     * 轮询
     */
    ROUND,
    /**
     * 随机选择在线的机器
     */
    RANDOM,
    /**
     * 每个任务按照Hash算法固定选择某一台机器，且所有任务均匀散列在不同机器上
     */
    CONSISTENT_HASH,
    /**
     * 使用频率最低的机器优先被选举
     */
    LEAST_FREQUENTLY_USED,
    /**
     * 最久未使用的机器优先被选举
     */
    LEAST_RECENTLY_USED,
    /**
     * 按照顺序依次进行心跳检测，第一个心跳检测成功的机器选定为目标执行器并发起调度
     */
    FAILOVER,
    /**
     * 按照顺序依次进行空闲检测，第一个空闲检测成功的机器选定为目标执行器并发起调度
     */
    BUSYOVER,
    /**
     * 广播触发对应集群中所有机器执行一次任务，同时系统自动传递分片参数；可根据分片参数开发分片任务；
     * 默认选择第一个
     */
    SHARDING_BROADCAST;

}
